﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using CondominiosREST.Dominio;
using System.Messaging;
using CondominiosREST.Persistencia;
 

namespace CondominiosREST
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Morosos" in code, svc and config file together.
    public class Morosos : IMorosos
    {
        public string RegistrarMoroso(Moroso moroso)
        {
            string resultado = "ERROR";
            string rutaCola = @".\private$\josue";
            try
            {
                if (!MessageQueue.Exists(rutaCola)) MessageQueue.Create(rutaCola);
                MessageQueue cola = new MessageQueue(rutaCola);
                Message mensaje = new Message() { Label = "Nuevo monto", Body = moroso };
                cola.Send(mensaje);
                resultado = "OK";
            }
            catch (Exception)
            {
                resultado = "ERROR";
            }
            return resultado;
        }

        public EstadoDeCuenta ConsultarEstadoDeMorosos(string dni)
        {
            MorososDAO dao = new MorososDAO();
            string rutaCola = @".\private$\josue";
            if (!MessageQueue.Exists(rutaCola)) MessageQueue.Create(rutaCola);
            MessageQueue cola = new MessageQueue(rutaCola);
            cola.Formatter = new XmlMessageFormatter(new Type[] { typeof(Moroso) });
            foreach (Message m in cola.GetAllMessages())
            {
                Message mensaje = cola.Receive();
                dao.GuardarMoroso((Moroso)mensaje.Body);
            }
            Moroso mo = dao.Obtener(dni);
            return new EstadoDeCuenta() { Dni = mo.DNI, CuotasAcumuladas = mo.Monto };
              
        }
    }
}
